#ifndef _LIST_H_
#define _LIST_H_
#include <iostream>
using namespace std;

template <typename T,typename T2>
class list
{
    T data;
public:
    void insert(T data){cout << __LINE__<<endl;};
    void remove(T2 data){};
    void listforeach(){};
};

//全特化：
template <>
class list<int,string>
{
    int data;
public:
    void insert(int data){cout << __LINE__<<endl;};
    void remove(string data){};
    void listforeach(){};
};

//当T为int时，无法使用上述通用的类定义
//需要偏特化以下版本

template <typename T2>
class list<int,T2>
{
    int data;
public:
    void insert(int data){cout << __LINE__<<endl;};
    void remove(T2 data){};
    void listforeach(){};
};

//当T2为string时，无法使用上述通用、特化1的类定义
//需要偏特化以下版本
template <typename T>
class list<T,string>
{
    T data;
public:
    void insert(T data){cout << __LINE__<<endl;};
    void remove(string data){};
    void listforeach(){};
};

#endif // _LIST_H_